package com.pearadmin.modules.sys.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pearadmin.common.web.domain.request.PageDomain;
import com.pearadmin.modules.sys.domain.InvAnodeInputInfo;
import com.pearadmin.modules.sys.mapper.InvAnodeInputInfoMapper;
import com.pearadmin.modules.sys.service.IInvAnodeInputInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 导杆投入信息Service业务层处理
 *
 * @author Mr.Ling
 * @date 2021-12-18
 */
@Service
public class InvAnodeInputInfoServiceImpl implements IInvAnodeInputInfoService {
    @Autowired
    private InvAnodeInputInfoMapper invAnodeInputInfoMapper;

    /**
     * 查询导杆投入信息
     *
     * @param id 导杆投入信息ID
     * @return 导杆投入信息
     */
    @Override
    public InvAnodeInputInfo selectInvAnodeInputInfoById(Long id) {
        return invAnodeInputInfoMapper.selectInvAnodeInputInfoById(id);
    }

    /**
     * 查询导杆投入信息列表
     *
     * @param invAnodeInputInfo 导杆投入信息
     * @return 导杆投入信息
     */
    @Override
    public List<InvAnodeInputInfo> selectInvAnodeInputInfoList(InvAnodeInputInfo invAnodeInputInfo) {
        return invAnodeInputInfoMapper.selectInvAnodeInputInfoList(invAnodeInputInfo);
    }

    /**
     * 查询导杆投入信息
     * @param invAnodeInputInfo 导杆投入信息
     * @param pageDomain
     * @return 导杆投入信息 分页集合
     * */
    @Override
    public PageInfo<InvAnodeInputInfo> selectInvAnodeInputInfoPage(InvAnodeInputInfo invAnodeInputInfo, PageDomain pageDomain) {
        PageHelper.startPage(pageDomain.getPage(), pageDomain.getLimit());
        List<InvAnodeInputInfo> data = invAnodeInputInfoMapper.selectInvAnodeInputInfoList(invAnodeInputInfo);
        return new PageInfo<>(data);
    }

    /**
     * 新增导杆投入信息
     *
     * @param invAnodeInputInfo 导杆投入信息
     * @return 结果
     */

    @Override
    public int insertInvAnodeInputInfo(InvAnodeInputInfo invAnodeInputInfo) {
        return invAnodeInputInfoMapper.insertInvAnodeInputInfo(invAnodeInputInfo);
    }

    /**
     * 修改导杆投入信息
     *
     * @param invAnodeInputInfo 导杆投入信息
     * @return 结果
     */
    @Override
    public int updateInvAnodeInputInfo(InvAnodeInputInfo invAnodeInputInfo) {
        return invAnodeInputInfoMapper.updateInvAnodeInputInfo(invAnodeInputInfo);
    }

    /**
     * 删除导杆投入信息对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteInvAnodeInputInfoByIds(String[] ids) {
        return invAnodeInputInfoMapper.deleteInvAnodeInputInfoByIds(ids);
    }

    /**
     * 删除导杆投入信息信息
     *
     * @param id 导杆投入信息ID
     * @return 结果
     */
    @Override
    public int deleteInvAnodeInputInfoById(Long id) {
        return invAnodeInputInfoMapper.deleteInvAnodeInputInfoById(id);
    }

    /**
     * 判断是否重复入库
     * @param anodeCode
     * @return
     */
    @Override
    public boolean useCheck(String anodeCode) {
        InvAnodeInputInfo info = selectByAnodeCode(anodeCode);
        //第一入库表示没有投入信息，可以使用
        if (info == null) {
            return true;
        } else if ("1".equals(info.getStatus())) {
            //表示已使用可以继续入库
            return true;
        } else{
            //最后一条的投入情况的状态是0,即表示没有使用过，故不能入库
            return false;
        }
    }

    public InvAnodeInputInfo selectByAnodeCode(String anodeCode) {
        return invAnodeInputInfoMapper.selectByAnodeCode(anodeCode);
    }
}
